﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DomainDriver.DomainModeling.DomainModels;
using DomainDriver.DomainModeling.DomainObjects;

namespace DomainDriver.DomainModeling.Constraints
{
    public interface IConstraint
    {
        string Name { get; }
        bool Enabled { get; set; }
        bool RequiresSetup { get; }
        IDomainModel DomainModel { get; }
        void Setup();
    }

    public delegate void SingleRepositoryConstraintSetupDelegate<KEY, KEYED_DOMAIN_OBJECT>(IDomainModel domainModel)
        where KEYED_DOMAIN_OBJECT : IKeyedDomainObject<KEY, KEYED_DOMAIN_OBJECT>;
}